package com.xvyy.tingshu.search.test;

import org.junit.jupiter.api.Test;

import java.util.Arrays;

/**
 * ClassName: BubbleSort
 * Package: com.xvyy.tingshu.search.test
 *
 * @Description:
 * @Author: xvyy
 * @CreateTime: 2025/3/6 - 15:51
 * @Version: v1.0
 */
public class BubbleSort {

    @Test
    public void test01() {
        boolean a = false;
        boolean b = true;

        // 使用&时，两个条件都会被计算
        System.out.println("使用&的情况：");
        System.out.println(a & testMethod()); // 输出 "test执行了"，结果为 false & true → false

        // 使用&&时，当第一个条件为false，第二个条件不会执行（短路）
        System.out.println("\n使用&&的情况：");
        System.out.println(a && testMethod()); // 输出不调用testMethod，直接返回false

        // 当第一个条件为true时，&&会继续计算第二个条件
        a = true;
        System.out.println("\n当第一个条件为true时：");
        System.out.println(a && testMethod()); // 输出 "test执行了"，结果为 true & true → true
    }

    static {
        System.out.println("静态代码块执行了");
    }
    private static boolean testMethod() {
        System.out.println("test执行了");

        return true;
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 5, 6};
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 5, 5, 6, 9]
        int[] arr1 = {8, 4, 5, 6, 6, 9};
        Arrays.sort(arr1);
        System.out.println(Arrays.toString(arr1));
        String s = new String();
    }

    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        int lastSwapIndex = n - 1;
        for (int i = 0; i < n - 1; i++) {
            boolean swapped = false;
            int currentSwapBound = lastSwapIndex;
            for (int j = 0; j < currentSwapBound; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 交换元素
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    swapped = true;
                    lastSwapIndex = j;
                }
            }
            if (!swapped) break;
        }
    }


    @Test
    public void test0009(){
        int a = 100;
        Integer b = 100;
        System.out.println(a == b);

    }
}
